Query Methods কি এবং কিভাবে কাজ করে?

Java Technologies - স্প্রিং বুট জেপিএ (Spring Boot JPA) - Query Methods এবং Custom Queries
365

Query Methods কী?

Query Methods হল Spring Data JPA এর একটি বৈশিষ্ট্য যা আপনাকে ডেটাবেস থেকে ডেটা অনুসন্ধান করতে সহজ এবং টেমপ্লেট পদ্ধতিতে কাস্টম কুয়েরি তৈরি করতে সহায়তা করে। Spring Data JPA স্বয়ংক্রিয়ভাবে Query Methods তৈরি করে, যেগুলি মূলত method names এর ভিত্তিতে ডাইনামিক SQL কুয়েরি তৈরি করে। এগুলির মাধ্যমে, আপনি Java method names ব্যবহার করে ডেটাবেস থেকে ডেটা রিট্রিভ বা ফিল্টার করতে পারেন, এবং এর জন্য কোন নির্দিষ্ট SQL কুয়েরি লেখার দরকার নেই।

স্প্রিং ডেটা জেপিএ (Spring Data JPA) এ Query Methods সাধারণত Repository ইন্টারফেসে ডিফাইন করা হয়, যেখানে মেথডের নামের ভিত্তিতে ডেটাবেস কুয়েরি তৈরি হয়। স্প্রিং এটি স্বয়ংক্রিয়ভাবে বিশ্লেষণ করে এবং উপযুক্ত SQL কুয়েরি তৈরি করে।


Query Methods কিভাবে কাজ করে?

Spring Data JPA-তে Query Methods তৈরি করার জন্য, JpaRepository বা CrudRepository এর মাধ্যমে একটি ইন্টারফেস তৈরি করতে হয়। এই ইন্টারফেসের মধ্যে আপনি ডেটা ফিল্টারিং, খোঁজা এবং ডেটাবেস অপারেশনগুলো সহজেই নির্ধারণ করতে পারেন।

Query Methods এর নাম অনুসারে স্প্রিং কন্টেইনার স্বয়ংক্রিয়ভাবে কুয়েরি তৈরি করে। উদাহরণস্বরূপ, findBy, findAllBy, deleteBy ইত্যাদি ব্যবহার করে ডেটাবেস অপারেশন করা যায়।


Spring Data JPA Query Methods এর উদাহরণ

ধরা যাক, আমাদের একটি User Entity ক্লাস রয়েছে এবং আমরা একটি UserRepository ইন্টারফেস তৈরি করব, যাতে বিভিন্ন ডেটাবেস অপারেশন করা যায়।

Step 1: User Entity ক্লাস তৈরি করা

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;
    private String email;

    // Constructor, Getters and Setters
    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Step 2: UserRepository ইন্টারফেস তৈরি করা

Spring Data JPA এর JpaRepository বা CrudRepository ইন্টারফেস থেকে এক্সটেন্ড করে আপনি Query Methods ব্যবহার করতে পারেন।

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {

    // Query method to find a user by name
    User findByName(String name);

    // Query method to find a user by email
    User findByEmail(String email);

    // Query method to find users by name and email
    List<User> findByNameAndEmail(String name, String email);

    // Query method to find all users whose name starts with a specific prefix
    List<User> findByNameStartingWith(String prefix);

    // Query method to delete a user by email
    void deleteByEmail(String email);
}

এখানে:

  • findByName: স্প্রিং একটি SQL কুয়েরি তৈরি করবে যা User টেবিলের name কলামের সাথে মিলে এমন একটি রেকর্ড খুঁজে বের করবে।
  • findByEmail: একইভাবে, এটি email এর উপর ভিত্তি করে ডেটা খুঁজে বের করবে।
  • findByNameAndEmail: এটি একাধিক প্যারামিটার (name এবং email) ব্যবহার করে ডেটা খুঁজবে।
  • findByNameStartingWith: name এর সাথে শুরু হওয়া সব ব্যবহারকারী ফিরিয়ে দেবে।
  • deleteByEmail: email এর মাধ্যমে ব্যবহারকারীকে মুছে ফেলবে।

স্প্রিং ডেটা জেপিএ স্বয়ংক্রিয়ভাবে এই মেথডগুলির জন্য কুয়েরি তৈরি করে।


Step 3: Service ক্লাস তৈরি করা

ডেটাবেসের সাথে কাজ করার জন্য একটি UserService ক্লাস তৈরি করতে হবে, যেখানে আমরা UserRepository থেকে মেথড কল করব।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    // Save a user
    public void saveUser(User user) {
        userRepository.save(user);
    }

    // Get a user by name
    public User getUserByName(String name) {
        return userRepository.findByName(name);
    }

    // Get all users with specific prefix
    public List<User> getUsersByNamePrefix(String prefix) {
        return userRepository.findByNameStartingWith(prefix);
    }

    // Delete a user by email
    public void deleteUserByEmail(String email) {
        userRepository.deleteByEmail(email);
    }
}

Step 4: Controller ক্লাস তৈরি করা

এখন আমরা একটি UserController তৈরি করব, যা HTTP রিকোয়েস্ট হ্যান্ডল করবে এবং UserService থেকে মেথড কল করবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    // Endpoint to add a new user
    @PostMapping("/add")
    public String addUser(@RequestParam String name, @RequestParam String email) {
        User user = new User(name, email);
        userService.saveUser(user);
        return "User added successfully!";
    }

    // Endpoint to get a user by name
    @GetMapping("/findByName")
    public User getUserByName(@RequestParam String name) {
        return userService.getUserByName(name);
    }

    // Endpoint to get users by name prefix
    @GetMapping("/findByNamePrefix")
    public List<User> getUsersByNamePrefix(@RequestParam String prefix) {
        return userService.getUsersByNamePrefix(prefix);
    }

    // Endpoint to delete a user by email
    @DeleteMapping("/delete")
    public String deleteUserByEmail(@RequestParam String email) {
        userService.deleteUserByEmail(email);
        return "User deleted successfully!";
    }
}

এখানে আমরা বিভিন্ন HTTP রিকোয়েস্টের জন্য কন্ট্রোলার তৈরি করেছি, যেমন:

  • /add: নতুন ব্যবহারকারী অ্যাড করার জন্য।
  • /findByName: নাম দিয়ে ব্যবহারকারী খোঁজার জন্য।
  • /findByNamePrefix: নামের প্রিফিক্স দিয়ে ব্যবহারকারী খোঁজার জন্য।
  • /delete: ইমেইল দিয়ে ব্যবহারকারী মুছে ফেলার জন্য।

Step 5: Spring Boot Application চালানো

এখন @SpringBootApplication অ্যানোটেশন ব্যবহার করে আমাদের প্রধান অ্যাপ্লিকেশন ক্লাস তৈরি করা হবে এবং অ্যাপ্লিকেশন চালানো হবে।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootJpaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootJpaApplication.class, args);
    }
}

এটি স্প্রিং বুট অ্যাপ্লিকেশন শুরু করবে এবং ডেটাবেস সংযুক্ত করবে।


Step 6: অ্যাপ্লিকেশন চালানো

এখন আপনি আপনার Spring Boot অ্যাপ্লিকেশনটি চালু করতে পারেন এবং বিভিন্ন HTTP রিকোয়েস্টের মাধ্যমে ডেটা সঞ্চয়, অনুসন্ধান এবং মুছে ফেলতে পারবেন।

উদাহরণ:

  1. Add User:

    POST http://localhost:8080/users/add?name=JohnDoe&email=johndoe@example.com
    
  2. Find User by Name:

    GET http://localhost:8080/users/findByName?name=JohnDoe
    
  3. Find Users by Name Prefix:

    GET http://localhost:8080/users/findByNamePrefix?prefix=John
    
  4. Delete User by Email:

    DELETE http://localhost:8080/users/delete?email=johndoe@example.com
    

সারাংশ

Spring Data JPA এর Query Methods ব্যবহারের মাধ্যমে আপনি Spring Boot অ্যাপ্লিকেশনে সহজেই ডেটাবেস অপারেশন করতে পারেন। findBy, findAllBy, deleteBy, ইত্যাদি পদ্ধতি ব্যবহার করে আপনি ডেটাবেস থেকে ডেটা অনুসন্ধান, আপডেট এবং মুছে ফেলতে পারেন, এবং এর জন্য কোনো কাস্টম SQL কুয়েরি লেখার প্রয়োজন হয় না। Spring Data JPA এই মেথডগুলোকে অটোমেটিক্যালি বিশ্লেষণ করে এবং উপযুক্ত SQL কুয়েরি তৈরি করে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...